﻿using System.Reflection;

namespace Mbs.Modularity
{
    /// <summary>
    /// 模块元数据职责库接口
    /// </summary>
    public interface IModuleMetaRepository
    {
        /// <summary>
        /// 得到所有模块元数据信息
        /// </summary>
        /// <returns>返回所有模块元数据信息</returns>
        IModuleMeta[] GetModules();

        /// <summary>
        /// 通过模块名称得到特定的模块元数据
        /// </summary>
        /// <param name="name">模块名称</param>
        /// <returns>返回模块元数据</returns>
        IModuleMeta GetModule(string name);

        /// <summary>
        /// 通过assembly来注册模块元数据
        /// </summary>
        /// <param name="assembly">assembly 程序集</param>
        /// <returns>返回注册后的模块元数据</returns>
        IModuleMeta Register(Assembly assembly);

        /// <summary>
        /// 通过assembly file 来注册模块元数据
        /// </summary>
        /// <param name="assemblyFile">assembly 文件</param>
        /// <returns>返回注册后的模块元数据</returns>
        IModuleMeta Register(string assemblyFile);
    }
}